Lazy Loading এবং Eager Loading এর ধারণা

Java Technologies - স্প্রিং বুট জেপিএ (Spring Boot JPA) - Lazy এবং Eager Loading
334

Lazy Loading এবং Eager Loading হল JPA (Java Persistence API)-এর দুটি গুরুত্বপূর্ণ ধারণা, যা অবজেক্ট রিলেশন ম্যানেজমেন্টের (ORM) সময় ডেটা লোড করার কৌশল নিয়ে কাজ করে। এগুলি স্প্রিং বুটের মধ্যে JPA ব্যবহার করার সময়, সম্পর্কিত অবজেক্টগুলির (যেমন, এক্সটেনশন, অ্যাসোসিয়েশন) ডেটা কিভাবে লোড হবে তা নির্ধারণ করে।

  • Lazy Loading: ডেটা শুধুমাত্র যখন প্রয়োজন হয় তখন লোড করা হয়।
  • Eager Loading: ডেটা প্রাথমিকভাবে লোড করা হয়, 즉 সবকিছু একবারেই লোড হয়।

1. Lazy Loading

Lazy Loading হল একটি কৌশল যেখানে সম্পর্কিত ডেটা বা অবজেক্টগুলি তখনই লোড হয় যখন সেগুলি আসলেই প্রয়োজন হয়। উদাহরণস্বরূপ, একটি ক্লাসে সম্পর্কিত একটি অ্যাসোসিয়েশন (যেমন, একাধিক অবজেক্টের লিস্ট) যদি Lazy Loading এর মাধ্যমে লোড করা হয়, তবে যখন আপনি ওই সম্পর্কিত ডেটাতে অ্যাক্সেস করবেন, তখন ডেটাটি লোড হবে। এর ফলে অ্যাপ্লিকেশন স্টার্টআপ সময় এবং মেমরি ব্যবহারের মধ্যে উন্নতি হয়, কারণ ডেটার সবকিছু একসাথে লোড না করে প্রয়োজন অনুযায়ী লোড করা হয়।

Lazy Loading এর সুবিধা:

  1. পারফরম্যান্স অপটিমাইজেশন: শুধু যখন প্রয়োজন হয় তখনই সম্পর্কিত ডেটা লোড হয়, যা প্রাথমিক লোড সময় কমায়।
  2. কম মেমরি ব্যবহার: অতিরিক্ত ডেটা লোড করা না হলে মেমরি খরচ কম থাকে।

Lazy Loading এর উদাহরণ:

@Entity
public class Department {
    @Id
    private Long id;
    private String name;

    @OneToMany(fetch = FetchType.LAZY)
    private List<Employee> employees;

    // Getters and Setters
}

@Entity
public class Employee {
    @Id
    private Long id;
    private String name;

    @ManyToOne(fetch = FetchType.LAZY)
    private Department department;

    // Getters and Setters
}

এখানে, Department Entity এর employees ফিল্ডটি Lazy Loading এর মাধ্যমে লোড হবে, অর্থাৎ শুধুমাত্র যখন আপনি employees লিস্টে অ্যাক্সেস করবেন, তখন ডেটাটি ডাটাবেস থেকে লোড হবে।

Lazy Loading এর সমস্যা:

  • N+1 Query Problem: যখন একাধিক সম্পর্কিত ডেটা লোড করতে হয় এবং প্রতিটি ডেটার জন্য নতুন কুয়েরি চালানো হয়, তখন এটি N+1 Query Problem তৈরি করতে পারে, যা পারফরম্যান্সে সমস্যা সৃষ্টি করতে পারে।

2. Eager Loading

Eager Loading হল একটি কৌশল যেখানে সম্পর্কিত সমস্ত ডেটা বা অবজেক্ট প্রাথমিকভাবে লোড হয়ে যায়, এমনকি যদি তা অ্যাক্সেস করা না হয়। এটি ডেটার লোডিং নিশ্চিত করে, এবং তখনই সম্পর্কিত সমস্ত ডেটা ডাটাবেস থেকে লোড হয়ে যায় যখন প্যারেন্ট অবজেক্টটি লোড হয়।

Eager Loading এর সুবিধা:

  1. সাম্প্রতিক ডেটা পাওয়া: সমস্ত সম্পর্কিত ডেটা একসাথে লোড হওয়ায় পরবর্তী সময়ে ডেটা অ্যাক্সেস করতে অপেক্ষা করতে হয় না।
  2. ডেটার এক্সেস দ্রুত: যখন সমস্ত ডেটা লোড হয়ে যায়, তখন ডেটার এক্সেস দ্রুত হয়।

Eager Loading এর উদাহরণ:

@Entity
public class Department {
    @Id
    private Long id;
    private String name;

    @OneToMany(fetch = FetchType.EAGER)
    private List<Employee> employees;

    // Getters and Setters
}

@Entity
public class Employee {
    @Id
    private Long id;
    private String name;

    @ManyToOne(fetch = FetchType.EAGER)
    private Department department;

    // Getters and Setters
}

এখানে, Department Entity এর employees ফিল্ডটি Eager Loading এর মাধ্যমে লোড হবে, অর্থাৎ যখন আপনি Department অবজেক্টটি লোড করবেন, তখন employees লিস্টটি সমস্ত ডেটা সহ লোড হয়ে যাবে।


Lazy Loading vs Eager Loading

CriteriaLazy LoadingEager Loading
PerformanceInitially faster; loads data when neededInitially slower; loads all related data
Memory UsageSaves memory as data is loaded only when requiredMay consume more memory as all related data is loaded upfront
Query ExecutionPotential N+1 query problemFewer queries, but may load unnecessary data
Use CaseWhen related data is not always neededWhen related data is always needed
Fetch TypeFetchType.LAZYFetchType.EAGER

সারাংশ

  • Lazy Loading ব্যবহার করলে সম্পর্কিত ডেটা তখনই লোড হয় যখন এটি সত্যিকারভাবে প্রয়োজন হয়, ফলে পারফরম্যান্স উন্নত হয় এবং মেমরি সাশ্রয়ী হয়।
  • Eager Loading ব্যবহার করলে সম্পর্কিত সমস্ত ডেটা প্রাথমিকভাবে লোড হয়ে যায়, যা দ্রুত এক্সেসের সুবিধা দেয়, তবে এটি অনেক বেশি মেমরি ব্যবহার করতে পারে এবং পারফরম্যান্স কমাতে পারে, বিশেষ করে যখন সম্পর্কিত ডেটার পরিমাণ বেশি হয়।

স্প্রিং বুট জেপিএ-তে, আপনি Lazy এবং Eager লোডিং কৌশল ব্যবহার করে আপনার অ্যাপ্লিকেশনের পারফরম্যান্স অপটিমাইজ করতে পারেন, তবে প্রতিটি কৌশলের সুবিধা এবং অসুবিধা বুঝে তাদের সঠিকভাবে ব্যবহার করা উচিত।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...